<?php

require_once(PATH_PAGE.'defaultPage.page.php');

abstract class pageContent {
  /**
   * @var sitePage 
   */
  protected $_pageObj       = null;
  protected $_page          = null;
  protected $_mode          = null;
  protected $_renderDefault = false;
  
  public function __construct(sitePage $page) {
    $this->_pageObj = $page;
    $this->_page    = $page->getPage();
    $this->_mode    = array_pop(explode('_',get_class($this)));
  }
  
  public function getPage(){
    return $this->_page;
  }
  
  public function getMode(){
    return $this->_mode;
  }
  
  public function renderDefault(){
    $ret='';
    if($this->_renderDefault){
      $default = new defaultPage($this->_pageObj->getSmarty());
      $ret = $default->fetch($this->_mode);
    }
    return $ret;
  }
  
  public function fetchTplFromClassFile($__file__,$tpl_vars=array()){
    $this->addTplJs();
    $this->addTplCss();
    return commun::getClassViewFromFile($__file__,$tpl_vars);
  }
  
  public function fetchTpl($path,$tpl_vars=array()){
    $this->addTplJs();
    $this->addTplCss();
    return commun::getClassView($path,$tpl_vars);
  }
  
  public function addTplJs(){
    $path = $this->getPage() .'/'.$this->getMode().'.js';
    js::addTpl($path);
  }
  
  public function addTplCss(){
    $path = $this->getPage() .'/'.$this->getMode().'.css';
    css::addTpl($path);
  }
  
  /**
   * Dans cette fonction il faut faire le rendu de la page
   * Smarty est disponible dans $_pageObj->getSmarty();
   * Il ne faut pas faire d'echo, sans utiliser 
   *   ob_start();
   *   $ret = ob_get_flush();
   * 
   * @return string
   */
  abstract function render();
  
  
  
}

